package listeners;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import web.Mensaje;
import web.Usuario;

/**
 * Application Lifecycle Listener implementation class ChatCicloVidaSesionListener
 *
 */
@WebListener
public class ChatCicloVidaSesionListener implements HttpSessionListener {

    /**
     * Default constructor. 
     */
    public ChatCicloVidaSesionListener() {
        // TODO Auto-generated constructor stub
    }

	/**
     * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
     */
    public void sessionCreated(HttpSessionEvent arg0) {
        
    	// Cuando se crea una sesion, se debe asignarle un color al usuario e inicializar la lista de mensajes.
    	System.out.println("Sesion en aplicacion chat creada");
    	
    	HttpSession sesion = arg0.getSession();
    	
    	//Inicializa lista mens
    	List<Mensaje> mensajesSesion = new ArrayList<Mensaje>();
    	sesion.setAttribute("mensajesUsuario", mensajesSesion);
    	
    	//Asignar color
    	
    	Usuario usuario = new Usuario();
    	usuario.nombre = sesion.getId();
    	
    	ServletContext contexto =  sesion.getServletContext();
    	
    	ArrayList<String> colores = (ArrayList<String>)contexto.getAttribute("colores");
    	
//    	System.out.println(colores.get(0));
    	usuario.color = colores.get(0);
    	colores.remove(0);
//    	System.out.println(colores.get(0));
//    	System.out.println(usuario.nombre);
    	sesion.setAttribute("usuario", usuario);
    	System.out.println("Sesion en aplicacion chat creada");
    	
    
    }

	/**
     * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
     */
    public void sessionDestroyed(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
    	
    	Usuario usuario = (Usuario) arg0.getSession().getAttribute("usuario");

    	System.out.println(usuario);
    	ArrayList<String> colores = (ArrayList<String>)arg0.getSession().getServletContext().getAttribute("colores");
    	colores.add(usuario.color);
    	System.out.println("Sesion en aplicacion chat destruida");
    }
	
}
